#include "mainwindow.h"
#include "findwords.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent){
    setupUi(this);
		findWords = new FindWords(progressBar, this);

//--Разбираюсь с моделью ключа------------------------------------------------------------
		KeysTblVw->setModel(findWords->keyMdl());

//--Разбираюсь с моделью слов-------------------------------------------------------------
		WordsTrVw->setModel(findWords->wordsMdl());
		WordsTrVw->setColumnWidth(0, 400); // Для удобства сделаю столбец с деревом сразу большим.
		// Чтобы фильтр устанавливался, когда изменили ключ через гуй.
		connect(KeysTblVw->itemDelegate(), SIGNAL(closeEditor(QWidget*)),
		        findWords, SLOT(setFilterWordsMdl()));

//--Настрою размеры формы.-----------------------------------------------------------------
		verticalSplitter->setStretchFactor(0, 1);
		verticalSplitter->setStretchFactor(1, 10);
		horizontalSplitter->setStretchFactor(0, 10);
		horizontalSplitter->setStretchFactor(1, 1);
		splitterWordsCancel->setStretchFactor(0, 1);
		splitterWordsCancel->setStretchFactor(1, 5);

//--Разбираюсь с моделью отмены-------------------------------------------------------------
		cancelTblVw->setModel(findWords->cancelMdl());

		connect(findWords, SIGNAL(reText(QString)), Out2PlnTxtEdt,
		        SLOT(setPlainText(QString)));
}

void MainWindow::changeEvent(QEvent *e){
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::on_D1Btn_clicked(){
	Out1Lst->clear();
	QString in = In1LnEdt->text();
	int l = in.length();
	QString out(l, ' ');
	int j, i, n;
	for(int k = 2; k <= Key1SpnBx->value(); ++k){
		j = 0;
		n = 0;
		for(i = 0; i < l; ++i){
			if(j + n >= l){
				++j;
				n = 0;
			}
			out[j + n] = in.at(i);
			n += k;
		}
		Out1Lst->addItem(out);
		out.clear();
	}
}

void MainWindow::on_In2LnEdt_textChanged(QString s){
	findWords->createKeyModel(s);

	KeysTblVw->resizeColumnsToContents();
	KeysTblVw->resizeRowsToContents();
}

void MainWindow::on_D2SBtn_clicked(){
	D2SBtn->setEnabled(false);

	findWords->findWords();

	D2SBtn->setEnabled(true);
}

void MainWindow::on_WordsTrVw_doubleClicked(QModelIndex i){
	findWords->setWord(i);
	// Потгоню размер ячеек в таблице отмен.
	cancelTblVw->resizeColumnsToContents();
	cancelTblVw->resizeRowsToContents();
}

void MainWindow::on_cancelTblVw_doubleClicked(QModelIndex i){
	findWords->cancelSetWord(i);
	// Потгоню размер ячеек.
	cancelTblVw->resizeColumnsToContents();
	cancelTblVw->resizeRowsToContents();
}

void MainWindow::on_SaveResFindActn_triggered(){
	findWords->save("res");
}

void MainWindow::on_OpenResFindActn_triggered(){
	findWords->open("res");
}
